
// require.context("路径"，是否递归引入，正则)   可以一次导入多个模块
let files = require.context('@/pages',true,/\.vue$/)





// 创建路由配置



let repeatRoutes = files.keys().map(path => {
    // 获取路径对应的每个.vue组件
    let currentComponent = files(path).default

    // 解构组件export default 导出的对象中添加的属性
    let {meta,name,refirect} = currentComponent



    // 通过正则，去掉\index.vue或者去掉.vue的后缀
    let reg = /(\/index\.vue|\.vue)$/


    path = path.substring(1).replace(reg,'')

    // console.log(path);

    return {
        path: path ? path : '/pages',
        // 重定向，name属性，meta路由元信息
        meta:meta ?? {},
        name:name ?? path.substring(1).split('/').join('-'),
        redirect: refirect ?? null,
        component:() => import ('@/pages' + path)
    }
})

// console.log(repeatRoutes);

function converTree(repeatRoutes) {
    repeatRoutes = [...repeatRoutes]
    let treeRoutes = []

    // 先给数据添加id和pid
    repeatRoutes.forEach(route => {
        
        //   将路径去掉第一个 / ,并根据 / 分割
        let routePathArr = route.path.substring(1).split('/')

        // 正常添加id
        route.id = routePathArr.join('-')
        // 如果routePathArr的长度大于1，说明是子目录
        if(routePathArr.length > 1){
            // 浅拷贝routePathArr
            let pathArr = [...routePathArr]

            pathArr.pop()

            let pid = pathArr.join('-')

            route.pid = pid  // 添加父目录id
            
        }
    })

    // 转换成树形数据

    repeatRoutes.forEach(route => {

        // route.path = route.path.toLowerCase()

        // console.log(route.path);

        // 单独对page404进行额外处理
        if(route.path === '/page404'){
            route.path = '*'
        }

      




        let parent = repeatRoutes.find(v => route.pid === v.id)
        // 如果route.pid === v.id，表示这个v是个父目录
        // 如果不是父目录，直接添加进treeRoutes中，如果是
        // 父目录，而且如果父目录下没有子目录，那就把子目录
        // 变为空数组，否则就将route添加进子目录中
        // console.log(parent);
        

        if(parent){
            if(!parent.children){
                parent.children = []
            }
            route.path = route.path.substring(1).split('/').pop()
            parent.children.push(route)
        }else {
            treeRoutes.push(route)
        }
    })
    

    return treeRoutes



}

let res = converTree(repeatRoutes)


export default [...res]

console.log(res);